package io.conekta.conektasdk; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.HttpClient; import org.apache.http.util.EntityUtils; import org.apache.http.NameValuePair; import org.apache.http.HttpResponse; import android.os.AsyncTask; import android.util.Base64; import java.util.List; /** * Created by picharras on 27/10/15. */ public class Connection { private List<NameValuePair> nameValuePairs; private String endPoint; public interface Request { public void onRequestReady(String data); } private Request listener; public Connection() { this.listener = null; } // Assign the listener implementing events interface that will receive the events public void onRequestListener (Request listener) { this.listener = listener; } public void request(List<NameValuePair> nameValuePairs, String endPoint) { this.nameValuePairs = nameValuePairs; this.endPoint = endPoint; new Task().execute(); } private class Task extends AsyncTask<Void, Void, String> { protected String doInBackground(Void...params) { String result; HttpClient http = new DefaultHttpClient(); HttpPost httpRequest = new HttpPost(Conekta.getBaseUri() + endPoint); String encoding = Base64.encodeToString( Conekta.getPublicKey().getBytes(), Base64.NO_WRAP); try { httpRequest.setHeader("Accept", "application/vnd.conekta-v" + Conekta.getApiVersion() + "+json"); httpRequest.setHeader("Accept-Language", Conekta.getLanguage()); httpRequest.setHeader("Conekta-Client-User-Agent", "{\"agent\": \"Conekta Android SDK\"}"); httpRequest.setHeader("Authorization", "Basic " + encoding); httpRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); HttpResponse response = http.execute(httpRequest); result = EntityUtils.toString(response.getEntity()); } catch (Exception ex) { throw new RuntimeException(ex); } return result; } @Override protected void onPreExecute() { } @Override protected void onPostExecute(String result) { listener.onRequestReady(result); } } }